package co.com.coomeva.adminEvaluacion.delegado;

import java.util.Date;
import java.util.List;

import co.com.coomeva.adminEvaluacion.logica.EdPPeriodoEvaluacionLogica;
import co.com.coomeva.adminEvaluacion.logica.EdPUnidadNegocioLogica;
import co.com.coomeva.adminEvaluacion.modelo.entidades.EdPEstado;
import co.com.coomeva.adminEvaluacion.modelo.entidades.EdPPeriodoEvaluacion;
import co.com.coomeva.adminEvaluacion.modelo.entidades.consulta.Consulta;

public class DelegadoEdPPeriodoEvaluacion {
	public static EdPPeriodoEvaluacionLogica logica = null;	
	private static DelegadoEdPPeriodoEvaluacion delegado = null;
	
	public static DelegadoEdPPeriodoEvaluacion getInstance() {
		if(delegado == null){
			delegado = new DelegadoEdPPeriodoEvaluacion();
			logica = EdPPeriodoEvaluacionLogica.getInstance();
		}
		return delegado;
	}

	public void crearPeriodoEvaluacion(EdPEstado edPEstado,
			Long gerenciaCodigo, String descripcion, Date fechaInicial,
			Date fechaFinal, Date fechaInicAplicacion, Date fechaFinAplicacion,
			Long consUnidadNegocio, String usuarioRed) throws Exception {
		logica.crearPeriodoEvaluacion(edPEstado,
									gerenciaCodigo,
									descripcion,
									fechaInicial,
									fechaFinal,
									fechaInicAplicacion,
									fechaFinAplicacion,
									consUnidadNegocio,
									usuarioRed);
	} 

	public void actualizarPeriodoEvaluacion(Long consPeriodo,Long consModulo,
			Long gerenciaCodigo, String descripcion, Date fechaInicial,
			Date fechaFinal, Date fechaInicAplicacion, Date fechaFinAplicacion,
			Long consUnidadNegocio, String usuarioRed, Long consEstado, Long consTipoPorcentaje) throws Exception {
		logica.actualizarPeriodoEvaluacion(consPeriodo,consModulo,
									gerenciaCodigo,
									descripcion,
									fechaInicial,
									fechaFinal,
									fechaInicAplicacion,
									fechaFinAplicacion,
									consUnidadNegocio,
									usuarioRed, consEstado, consTipoPorcentaje);
	}
	
	public List<Consulta> consultarPeriodoEval2(Long gerenciaCodigo,
			String descripcion, Date fechaInicial, Date fechaFinal,
			Date fechaInicAplicacion, Date fechaFinAplicacion,
			Long consUnidadNegocio) throws Exception {
		return logica.consultarPeriodoEval2(gerenciaCodigo,
									descripcion,
									fechaInicial,
									fechaFinal,
									fechaInicAplicacion,
									fechaFinAplicacion,
									consUnidadNegocio);
	}
	
	public List<EdPPeriodoEvaluacion> consultarPeriodoEval(Long gerenciaCodigo,
			String descripcion, Date fechaInicial, Date fechaFinal,
			Date fechaInicAplicacion, Date fechaFinAplicacion,
			Long consUnidadNegocio) throws Exception {
		return logica.consultarPeriodoEval(gerenciaCodigo,
									descripcion,
									fechaInicial,
									fechaFinal,
									fechaInicAplicacion,
									fechaFinAplicacion,
									consUnidadNegocio);
	}

	public EdPPeriodoEvaluacion consultarPeriodoEvalPorID(Long consPeriodo) throws Exception {
		return logica.consultarPeriodoEvalPorID(consPeriodo);
	}
	
	/*
	public List<EdPPeriodoEvaluacion> consultarEdPPeriodoEvaluacion() throws Exception {
		return logica.consultarEdPPeriodoEvaluacion();
	}
	*/

	public void eliminarPeriodoEval(Long consPeriodo, String usuarioRed) throws Exception {
		logica.eliminarPeriodoEval(consPeriodo, usuarioRed);
	}
	
	public List<EdPPeriodoEvaluacion> empresaPeriodosActivos(Long gerenciaCodigo, Long consUnidadNegocio) throws Exception {
		return logica.empresaPeriodosActivos(gerenciaCodigo, consUnidadNegocio);
	}

	public void generarReporteConsolEval(Long consPeriodo) throws Exception {
		logica.generarReporteConsolEval(consPeriodo);
	}

	public String obtenerNombreArchivo() {
		return logica.getNombreArchivo();
	}
	
	public void ajustarNombreArchivo(String strNombreArchivo) {
		logica.setNombreArchivo(strNombreArchivo);
	}

	public List<Consulta> consultarReporteRanking(Long gerenciaCodigo, Long consPeriodo,
			Long empDepto, Long empLocalidad, Long empDivision, Long empArea) throws Exception {
		return logica.consultarReporteRanking(gerenciaCodigo, consPeriodo,
				empDepto, empLocalidad, empDivision, empArea);
	}

	public List<Consulta> consultarReporteConsolidadoFactor(Long factorAgrup,
			Long factorAgrupDepent, Long gerenciaCodigo, Long consPeriodo,
			Long empDepto, Long empLocalidad, Long empDivision, Long empArea, Long jefeCodigo) throws Exception {
		return logica.consultarReporteConsolidadoFactor(factorAgrup,
				factorAgrupDepent, gerenciaCodigo, consPeriodo,
				empDepto, empLocalidad, empDivision, empArea, jefeCodigo);
	}

	public List<Consulta> consultarReporteIndicadorDesempenno(Long factorAgrup,
			Long factorAgrupDepent, Long gerenciaCodigo, Long consPeriodo,
			Long empDepto, Long empLocalidad, Long empDivision, Long empArea,
			Long jefeCodigo) throws Exception {
		return logica.consultarReporteIndicadorDesempenno(factorAgrup,
				factorAgrupDepent, gerenciaCodigo, consPeriodo,
				empDepto, empLocalidad, empDivision, empArea, jefeCodigo);
	}
}
